package com.lhn.drawTest;

import javax.swing.*;
import java.awt.*;

/**
 * @author lhn
 * @date 2024-07-24 17:13
 */

public class DrawCircle extends JFrame{

    private MyPanel mp = null;

    public static void main(String[] args) {
        new DrawCircle();
    }

    public DrawCircle() {
        //初始化面板
        mp = new MyPanel();
        //把面板放入到窗口（画框）
        this.add(mp);
        this.setSize(800, 800);
        this.setVisible(true);
        //点击X时关闭该线程
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class MyPanel extends JPanel {

    //1.MyPanel对象是一个画板
    //2.Graphics是一支画笔
    /*
    * 组件第一次在屏幕显示的时候，程序会自动的调用paint方法来绘制组件
    * 在以下情况paint()将会被调用
    * 1.窗口最小化，再最大化
    * 2.窗口的大小发生变化
    * 3.repaint函数被调用
    */
    @Override
    public void paint(Graphics g) {
        System.out.println("方法被调用~");
        super.paint(g);
        //画椭圆形
        g.drawOval(10, 10, 100, 100);
        g.fillOval(100, 10, 100, 100);

        g.drawLine(10, 20, 100, 20);

        g.drawRect(10, 80, 60, 30);
        g.fillRect(10, 150, 60, 20);

        Image image = Toolkit.getDefaultToolkit().getImage(MyPanel.class.getResource("/pic.jpg"));
        g.drawImage(image, 200, 200, 480, 640, this);

        g.setColor(Color.cyan);
        g.setFont(new Font("隶书", Font.BOLD, 50));
        g.drawString("天空飘来五个字~", 100, 200);
    }
}